1. Field of the Invention
This invention relates generally to bus systems and, more particularly, to robust addressing on a dynamically configurable bus.
2. Description of the Related Art
A “bus” is a group of transmission media used to pass information from one location to another. One type of bus is a collection of wires used to transmit data and control information to the various internal components of a computer. Another type of bus is a collection of wires, fibers, or cables, used to transmit data and control information between “bus devices” such as computers, printers, and magnetic tape drives. As used herein, the term “bus” shall refer to the latter type of bus.
The bus devices and the bus comprise a “bus system.” Exemplary applications for bus systems include universal serial bus (“USB”) systems and Ethernet local area networks (“LANs”) that, in turn, might comprise part of larger wide area networks (“WANs”). A bus may be used to implement a LAN, but not all bus systems are actual computer networks in the sense of a LAN. An bus system might simply be a group of devices on a bus wherein the bus is a channel among the devices. Thus, the term “bus system” as used herein shall encompass a group of bus devices transmitting and/or receiving information over a bus. The definition may encompass a LAN depending on the particular implementation.
A bus system, therefore, typically includes a bus to which several bus devices are coupled. Each bus device has a physical address on the bus at which it receives and/or from which it transmits information over the bus. Thus, a computer may transmit information over the bus from its physical address to a shared printer at the printer's physical address, provided both are part of the same bus system.
Historically, every bus device had a predetermined, unique, physical address on the bus to prevent confusion during information transmission. Because the physical address was predetermined and static, a device could assume that a particular device was, in fact, located at that address. In the recited example, the computer could send the information to the printer at the printer's assigned physical address confident that only the printer would receive or respond because only the printer would reside at the assigned physical address.
However, the use of physical addressing imposed certain constraints on bus system design. These constraints were eventually overcome using a technique known as “virtual addressing.” Under this approach, a bus device operates on the bus using its “virtual address,” which is associated with, but typically different from, its physical address. Virtual addressing nevertheless created a serious addressing problem: a device could no longer assume the presence or absence of another device from its virtual address because it differed from the device's physical address.
Typically, when a device wishes to communicate with another device over a virtually addressed bus, the communicating bus device at some point queries all the other bus devices until it finds the one with which it wishes to communicate. More particularly, the querying, device accesses the bus one or more times to examine the configuration information for each device encountered. The querying device determines from the configuration information whether the encountered device is the one sought. If so, the physical address is retrieved and the communication conducted. Otherwise, the querying device continues on to the next bus device until it locates the desired bus device.
This propagation of addressing information requires substantial overhead, burdens the bus system and consumes system resources that otherwise might be used more productively. In addition, the propagation of addressing information potentially produces user visible delays or interruption of services. Thus, although this approach works satisfactorily with small numbers of bus devices, it is unduly burdensome for large bus systems.
The overhead problem is exacerbated when the dynamic bus system includes power-managed bus devices. A power-managed device switches to a “sleep” state to reduce power consumption after a predetermined period of nonuse. Many bus devices have limited capabilities for tracking certain events in the reconfiguration in dynamically configurable bus systems. The difficulty arises when the dynamic bus system is reconfigured and a device of this type is in the sleep state. Such devices cannot track dynamic events in the sleep state and must be awakened to do so, thereby hampering power management.
The present invention is directed to overcoming, or at least reducing the effects of, one or more of the problems set forth above.